#title: 事件监听
#index:0,1
#author:zozoh(zozohtnt@gmail.com)

--------------------------------------------------------------------------------------------------------
都有哪些事件
	Nutz.Ioc 容器有三种事件：
	
	 * 对象被创建(create事件)
	 * 对象被从容器中取出(fetch事件)
	 * 对象被销毁(depose事件)
	
	在这三种时刻，你如果想做一些特殊的操作，比如，当一个数据源被销毁时，你希望能够关闭所有的连接，
	声明一下，你想监听什么事件，以及怎么监听。

    {*#F00; 注:} 如果你的对象是 "singleton: false"，那么容器创建了对象后就会立即忘记它的存在。因为鬼才知道
    你打算创建多少份该对象的实例，要是每份实例都记录的话，内存说不定爆了。所以这样的非单例对象，
    你在 depose 容器的时候，容器是不会调用它的 depose 方法的，即使你在配置文件中声明了它，因为容器根本
    就不会知道这样的对象曾经存在过。但是 create, fetch 事件还是会被调用到的。
	
--------------------------------------------------------------------------------------------------------
怎么监听
	
	通过对象自身的一个函数
		这个函数必须为  public，并且不能有参数
		
		为 UserService 对象增加一个函数：
			{{{<JAVA>
			public void init() {
				init_sysuser();
				init_cmsuser();
				init_roles();
				log.debug("sysuer/cmsuser/roles init complete");
			}
			}}}
		
		在 UserService 配置文件中增加新的对象
			{{{<JAVA>
			@IocBean(create="init")
			public class UserService {
			
			...
			}
			}}}
		调用代码,或第一次被取出时
			{{{<JAVA>
			ioc.get(UserService.class);
			}}}
		控制台输出
			{{{<JAVA>
			2016-12-15 DEBUG UserService(UserService.java:1024) : sysuer/cmsuser/roles init complete
			}}}
		
	
--------------------------------------------------------------------------------------------------------
ioc json文件下的配置

	{{{<JSON>
	xyz :{
		type : "xxx.yyy.zzz.XYZ",
		events : {
			create : ... , // 创建完成后,各种属性已经设置好
			fetch  : ... , // 每次从ioc取出
			depose : ...   // ioc容器销毁前,一般用于清理各种资源
		}
	}
	}}}
	根据需要，你可以选择上述三个事件，为其声明触发器，或者触发函数。

	切勿用ioc js和@IocBean同时定义一个bean,这样的话,只有一个会生效

	
	
	
